package eu.news.template;

import java.io.File;
import java.io.IOException;

import eu.jk.base.io.Texter;
import eu.jk.helper.RootPath;

public class StaticHelper {
	
	/**
	 * 约定的SORT Key
	 */
	public static final String STATIC_SORT_KEY = "eu.news.unique-keys.static.sorts";
	
	/**
	 * 约定的id key
	 */
	public static final String STATIC_ID_KEY = "eu.news.unique-keys.static.id";
	
	static String dir=RootPath.root+"../statics/";
	
	static {
		File file=new File(dir);
		if (file.exists() && !file.isDirectory())
			file.delete();
		if (!file.exists())
			file.mkdirs();
	}
	/**
	 * 删除由sort和id指定的静态化数据
	 */
	public static void delete(String sort, int id){
		File file=new File(dir+sort+"_"+id);
		if(file.exists())
			file.delete();
	}
	
	/**
	 * 读取静态化数据
	 * @throws IOException
	 */
	public static String read(String sort, int id) throws IOException{
		if (exists(sort, id))
			return Texter.readText(dir+sort+"_"+id,"UTF-8");
		return null;
	}
	
	/**
	 * 检测是否存在指定的静态化数据
	 */
	public static boolean exists(String sort, int id){
		File file=new File(dir+sort+"_"+id);
		return file.exists();
	}
	
	/**
	 * 更新静态化数据，成功返回静态化数据，失败抛出异常或者返回NULL
	 * 在某些情况下，如使用JSP作为模板，调用此方法将会将内容发送到客户端。
	 * 所以作为约定，这个方法将会内容发送到客户端。
	 */
	public static String update(WebPage page, String sort, int id) throws IOException{
		page.setParameter(STATIC_SORT_KEY, sort);
		page.setParameter(STATIC_ID_KEY, id);
		page.forward();
		return read(sort, id);
	}
	
	/**
	 * 手动覆写静态化数据。
	 */
	public static void write(String sort, int id, String staticData) throws IOException{
		Texter.writeText(dir+sort+"_"+id,"UTF-8", staticData);
	}
}
